import com.ll.generic.GenericMethod;

import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * User: linlin
 * Date: 13-6-23
 * Time: 下午3:18
 * To change this template use File | Settings | File Templates.
 */
public class CovariantMain {

    public static void main(String[] strings){
        Integer[] intArray = new Integer[10];
        intArray[0] = 1;
        System.out.println(intArray[0]);

        Number[] numberArray = intArray;
//        numberArray[1] = 1.2;              //throw java.lang.ArrayStoreException 类型不匹配
//        System.out.println(intArray[1]);


        List<Integer> li = new ArrayList<Integer>();
        li.add(new Integer(1));
        System.out.println(li);

        List<?> lu= li;
        System.out.print(lu);

//        lu.add(new Integer(10));         //error编译器不能对 List 的类型参数作出足够严密的推理，以确定将 Integer 传递给 List.add() 是类型安全的
        lu.clear();                 //true，该方法不依赖于编译器必须知道关于 lu 的类型参数的任何信息
        System.out.println(lu);

        GenericMethod gm  = new GenericMethod();
        String s = gm.ifThenElse(true, "a", "b");
        System.out.println(s);

        Integer i = gm.ifThenElse(true,new Integer(1),new Integer(2)) ;
        System.out.println(i);

//        String s2 = gm.ifThenElse(true,"pi",new Integer(3));         //泛型，类型安全。方法要求返回的类型一致，不能是Interger or String。


    }


}
